<template>
  <!-- 资讯分类管理 -->
  <div class="Information">
    <!-- 头部 -->
    <div class="header">
      <el-button type="primary" size="small " @click="addInformation">新增</el-button>
    </div>
    <!-- 内容区域 -->
    <div class="conten">
      <el-table :data="informationData" style="width: 100%" size="small ">
        <!-- 序号 -->
        <el-table-column type="index" label="序号" width="60px" align="center"></el-table-column>
        <!-- 名称 -->
        <el-table-column prop="name" label="名称" width="150px" align="center"></el-table-column>
        <!-- 排序号 -->
        <el-table-column prop="no" label="排序号" align="center"></el-table-column>
        <!-- 描述 -->
        <el-table-column prop="description" label="描述" width="800px" align="center"></el-table-column>
         <!-- 操作 -->
        <el-table-column fixed="right" label="操作" align="center">
          <template slot-scope="scope">
            <el-button @click="editInformation(scope.row)" type="text" size="small"
              >编辑</el-button>
            <el-button type="text" size="small" style="color:red" @click="deleteInformation(scope.row.id)">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
    </div>
    <!-- 模态框 -->
   <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" @close="dialogClose">
      <!-- 表单区域 -->
      <!-- :model 表单对象 最终我们要提交的那个表单对象 -->
      <!-- :rules 表单验证的规则 -->
      <!-- ref 类比与 id 最终通过ref找到这张表单 -->
      <el-form
        :model="InformationForm"
        :rules="rules"
        ref="Information_form"
        label-width="80px"
      >
        <!-- 栏目名称 -->
        <el-form-item label="栏目名称" prop="name">
          <el-input v-model="InformationForm.name"></el-input>
        </el-form-item>
        <!-- 序号 -->
        <el-form-item label="序号" prop="no">
          <el-input v-model="InformationForm.no"></el-input>
        </el-form-item>
        <!-- 栏目介绍 -->
        <el-form-item label="栏目介绍" prop="description">
          <el-input
            type="textarea"
            :rows="3"
            placeholder="请输入内容"
            v-model="InformationForm.description">
          </el-input>
        </el-form-item>

      </el-form>
      <!-- 底部操作按钮区域 -->
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogClose">取 消</el-button>
        <!-- 提交表单后 调用重置表单的方法 -->
        <el-button type="primary" @click="submitForm">
          确 定
        </el-button>
      </span>
    </el-dialog>
  </div>
</template>

<script>
// 引入axios
import {get, post} from '@/utils/request'
export default {
  data() {
    return {
     // 顾客数组 - 表格的数据源的数据
      informationData: [],
      // 表单对象
      InformationForm: {
        // 栏目名称
        name: "",
        // 序号
        no: "",
        // 栏目介绍
        description: "",
      },
      // 控制模态框的显示与隐藏
      dialogVisible: false,
      // 模态框的标题
      dialogTitle: "新增栏目信息",
       // 表单验证规则
      rules: {
        // 栏目名称
        name: [{ required: true, message: "栏目名称", trigger: "blur" },
        { type: "string", message: "请输入栏目名称" },],
      },
    };
  },
  computed: {},
  methods: {
    async getAllInformationData(){
      // 获取参数
      let data = {}
      // 通过对应的参数发送网络请求 获取产品数组数据
      let res = await get('/category/findAll', data)
      // 将data中的产品数组 进行赋值
      this.informationData = res.data
    },
     editInformation(row) {
      // 将当前点击的这一行的对象 赋值到 表单对象里
      // 浅拷贝 赋值对象的引用 对象的内存地址 用的还是用一个
      // 深拷贝
      this.InformationForm = { ...row };
      // 设置模态框的标题
      this.dialogTitle = "编辑栏目信息";
      // 模态框显示出来
      this.dialogVisible = true;
    },
    submitForm(){
      this.$refs['Information_form'].validate(async (valid) => {
        if (valid) {
          // 发送表单验证的请求 提交表单对象
          let res = await post('/category/saveOrUpdate', this.InformationForm)
          // 给用户一个成功的提示
          if (res.status == 200) {
            this.$message({
              message: res.message,
              type: "success",
            });
            // 重新刷新页面的数据
            this.getAllInformationData();
            // 调用关闭模态框的方法
            this.dialogClose()
          } else {
            this.$message.error(res.message);
          }
        } else {
          console.log('error submit!!');
          return false;
        }
      });
    },
    // 关闭模态框 调用表单重置的方法
    dialogClose(){
      // 重置表单
      this.$refs['Information_form'].resetFields();
      // 关闭模态框
      setTimeout(() => {
        this.dialogVisible = false
      }, 200);
    },
    async deleteInformation(id) {
      // 发送删除请求
      let res = await get("/category/deleteById", { id });
      // 给用户一个成功或失败的提示
      if (res.status == 200) {
        this.$message({
          message: res.message,
          type: "success",
        });
        // 重新刷新页面的数据
        this.getAllInformationData();
      } else {
        this.$message.error(res.message);
      }
    },
    // 添加咨询分类
    addInformation(){
      // 清空表单对象
      this.InformationForm = {};
      // 设置模态框的标题
      this.dialogTitle = "新增栏目信息";
      // 模态框显示出来
      this.dialogVisible = true;
    }
  },
  created() {
    // 自动的获取产品数据
    this.getAllInformationData()
  },
  mounted() {},
};
</script>
<style scoped>
</style>
